package cn.xuguowen.user.designPatten.factory.heima_factory_method;

/**
 * ClassName: Client
 * Package: cn.xuguowen.user.designPatten.factory.heima_factory_method
 * Description:
 * 客户端，测试工厂方法！
 * 工厂方法模式的优点：
 *  1.用户只需要知道具体工厂的名称即可获得目标产品，无需知道产品的具体创建过程。
 *  2.在系统增加新产品时只需要添加具体的产品类和对应的产品工厂类，无需对原工厂进行任何修改，满足开闭原则。
 * 工厂方法模式缺点：
 *  1.每增加一个产品就要增加一个具体的产品类和一个对应的产品工厂类，增加了系统的复杂度。最坏情况下可能会造成类爆炸的问题！
 *
 * @Author 徐国文
 * @Create 2023/4/25 18:16
 * @Version 1.0
 */
public class Client {
    public static void main(String[] args) {
        // 美式咖啡
        // CoffeeStore coffeeStore = new CoffeeStore(new AmericanFactory());

        // 拿铁咖啡
        // CoffeeStore coffeeStore = new CoffeeStore(new LatteFactory());

        // 卡布奇诺咖啡
        CoffeeStore coffeeStore = new CoffeeStore(new CappuccinoFactory());
        Coffee coffee = coffeeStore.orderCoffee();
        System.out.println(coffee.getName());
    }
}
